package models; import java.util.ArrayList; import java.util.Observable; import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class Phrase extends Observable implements DictionaryEntry { @JsonProperty("content") private ArrayList<DictionaryEntry> content = new ArrayList<>(); @JsonCreator public Phrase() { } public void add(DictionaryEntry entry) { content.add(entry); setChanged(); notifyObservers(); } public void remove(DictionaryEntry entry) { content.remove(entry); setChanged(); notifyObservers(); } public ArrayList<DictionaryEntry> getContent() { return content; } public void setContent(ArrayList<DictionaryEntry> content) { this.content = content; } public boolean equals(Object obj) { if (!(obj instanceof Phrase)) return false; int i, j; Phrase o = (Phrase) obj; if (o.getContent().size() != content.size()) return false; for (i = 0; i < o.getContent().size(); i++) if (!(o.getContent().get(i).equals(content.get(i)))) return false; return true; } public int hashCode() { int i; int result = 27; for (i = 0; i < content.size(); i++) result = 37 * result + content.get(i).hashCode(); return result; } public String toString() { return content.stream().map(Object::toString).collect(Collectors.joining(" ")); } }